﻿package planningsbord_v4.gui {

	import flash.display.Sprite;
	import planningsbord_v4.model.Verzorgende;
	import flash.text.*;
	
	/*
	De medewerkerKolom class maakt een kolom op het planningsbord voor een 
	verzorgende die meegegeven wordt als parameter in de contructor
	*/
	public class MedewerkerKolom extends Sprite {
		
		private var verzorgende:Verzorgende;
		private var planningskaarten:Array = new Array();
		private var naamLabel:TextField = new TextField();
		private var fontFormat:TextFormat = new TextFormat();
		
		private var xPos:Number;
		private var yPos:Number;
		private var breedte:Number;
		private var hoogte:Number;
		
		/*
		Contructor van een nieuwe medewerkerKolom. Deze wordt gemaakt op basis
		van de gegevens van een object van de Verzorgende class.
		*/
		public function MedewerkerKolom( deVerzorgende:Verzorgende, xPos:int, yPos:int, breedte:int, hoogte:int ):void {
			verzorgende = deVerzorgende;
			
			this.xPos = xPos;
			this.yPos = yPos;
			this.breedte = breedte;
			this.hoogte = hoogte;
			
			fontFormat.size = 20;
			fontFormat.align = "center";
			
			tekenKolom();
		}
		
		private function tekenKolom():void {
			// teken body
			this.graphics.clear();
			this.graphics.lineStyle( 1, 0x000000, 1 );
			this.graphics.beginFill(0xFFFFFF);
			this.graphics.drawRect(xPos, yPos, breedte, hoogte);
			this.graphics.endFill();
			
			// teken kop
			this.graphics.lineStyle( 1, 0x000000, 1 );
			this.graphics.beginFill( 0xFF0000 );
			this.graphics.drawRect(xPos,yPos, breedte, 30);
			this.graphics.endFill();
			
			// naamLabel toevoegen
			naamLabel.text = verzorgende.getNaam();
			naamLabel.setTextFormat(fontFormat);
			naamLabel.x = xPos;
			naamLabel.y = yPos;
			naamLabel.width = breedte - 10;
			naamLabel.height = 30;
			addChild(naamLabel);
		}
		
		public function getPlanningsKaarten():Array {
			return planningskaarten;
		}
		
		public function addPlanningsKaart( kaart:PlanningsKaart ):void {
			planningskaarten.push(kaart);
		}
		public function removePlanningsKaart( kaart:PlanningsKaart ):void {
			for(var i=0; i<planningskaarten.length;i++) {
				if( kaart == planningskaarten[i] ) {
					planningskaarten.splice(i,1);
					break;
				}
			}
		}
		public function getAantalKaarten():Number {
			return planningskaarten.length;
		}
		public function getVerzorgende():Verzorgende {
			return verzorgende;
		}
		public function setVerzorgende( deVerzorgende:Verzorgende ):void  {
			verzorgende = deVerzorgende;
		}
		
		/* De volgende functies overschrijven de functies van de Sprite class*/
		
		override public function get width():Number {
			return breedte;
		}
		override public function set width(nieuweWaarde:Number):void {
			breedte = nieuweWaarde;
			tekenKolom();
		}
		override public function get height():Number {
			return hoogte;
		}
		override public function set height(nieuweWaarde:Number):void {
			hoogte = nieuweWaarde;
			tekenKolom();
		}
		override public function get x():Number {
			return xPos;
		}
		override public function set x(nieuweWaarde:Number):void {
			xPos = nieuweWaarde;
			tekenKolom();
		}
		override public function get y():Number {
			return yPos;
		}
		override public function set y(nieuweWaarde:Number):void {
			yPos = nieuweWaarde;
			tekenKolom();
		}
		/* *********************************************************************** */
		
	}
}
